iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0

今天是最後一天了,我們來看看這幾天以來,我們都學會了什麼。

首先,在 Day 02 時,我們看過了怎麼開啟一個 embeddedServer 服務,並且看到了使用工廠模式的 NettyApplicationEngine。

Day 03 時,我們看到了路由的設置,並且接觸了我們的第一個 Ktor 套件,BaseRouteScopedPlugin。

Day 04 和 Day 5 時,我們看到了路由套件是怎麼設置 HTTP 路徑的,並且看到了 Ktor 使用 data class 和 enum class 來定義路由的方式,以及如何解析輸入的路徑。

Day 06 和 Day 07 我們看到了回傳內容的處理,雖然邏輯相對複雜,但是透過註解的協助,我們還是釐清了 call.respondText() 的邏輯,並且稍微窺見了一點點 Ktor 利用協程提高系統效率的部分。

Day 08 我們看到了靜態檔案處理的部分,Day 09、 Day 10 Day 11則是看到了 HTML DSL 的定義方式。這邊我們學到了 Ktor 如何利用 HTMLTag 物件來生成 HTML 內容。這邊使用了很多的 Kotlin 小技巧,像是 inline 和 crossinline 語法,還有 unaryPlus 這個 operator fun。

Day 12 和 Day 13我們看了 ContentNegotiation 這個處理輸出內容的套件,以及他怎麼建立 JsonBuilder 來生成 json 格式的輸出。

Day 14 和 Day 15 我們看到了怎麼用類似的邏輯,將收到的請求和回傳轉換成開發者自定義的類別。

Day 16 開始,我們進入到了 Ktor 存取第三方 API 的功能。裡面我們看到了 CIOEngine 和 HttpClient 等類別,並在 Day 17 Day 18 這幾天仔細的看過了傳送第三方資料的邏輯。

Day 19 和 Day 20 我們看到了使用 Form data 傳輸資料的方式,這也讓我們學到如何傳輸檔案類型的內容,到第三方 API 內。這邊我們也看到了 Ktor 善用了 Kotlin 語法內的 List 類別,將檔案切成 List<PartData> 來進行傳輸。

Day 21 開始,我們就進入到了 webSocket 的內容,Day 22 Day 23 我們看到了 Ktor 如何建立一個 webSocket 的路徑,也簡單的帶到了 RFC 6455 這份定義 webSocket 實作的文件。Day 24 我們更進一步的看了 Ktor 內 Frame
的實作。

前面這幾天的經驗,讓我們可以更好的在 Day 25 讓 webSocket 之間互動,以及在 Day 26 撰寫存取第三方的 client.webSocket。

最後在 Day 27、Day 28 和 Day 29,我們進入到了一個 Ktor v2.2.0 才開始提供的內容。我們利用 createApplicationPlugin 建立了自己的 Ktor 套件,並且試著定義了 onCall onCallReceive 等事件,存取了 Ktor 所拿到的 call.request 和 call.response 等物件。

希望這近一個月以來,可以讓各位讀者對 Ktor 的實作更加熟悉,也同時對一個框架該提供怎樣的功能有更高的掌握。

今年的鐵人賽就到這邊了!大家明年見!


上一篇
Day 29:利用 createConfiguration 設置自定義套件參數
系列文
深入解析 Kotlin 專案 Ktor 的程式碼,探索 Ktor 的強大功能 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
Brandy
iT邦新手 2 級 ‧ 2023-10-14 12:16:19

恭喜完賽!

我要留言

立即登入留言